import { Reducer } from "redux";
import { get } from "../utils/request";

import { GET_QUICK_SELECT } from "./actionNames";
// 使用任意属性声明了一个对象
interface IQuickSelect {
  // 任意属性
  [key: string]: any;
}

export interface IProductInfo {
  quickSelects: IQuickSelect[];
}

const defaultProductInfo: IProductInfo = {
  quickSelects: [],
};

// 一个用于创建action的函数，它的执行结果是一个action对象
export function getQuickSelect(name: string, id: number) {
  // 返回了一个action对象
  return {
    type: GET_QUICK_SELECT,
    // 它的payload是一个promise对象
    // javascript的一个特性：先取值再赋值
    // i = 1+1
    payload: get("/api/category?limit=6", { name, id }, { needToken: false }),
  };
}

const productInfo: Reducer<IProductInfo> = (
  // 如果不传state ,默认值 是defaultProductInfo
  state = defaultProductInfo,
  { type, payload }
) => {
  switch (type) {
    case GET_QUICK_SELECT:
      return { ...state, quickSelects: payload.data };
    default:
      return state;
  }
};

export default productInfo;
